编写线程并发拷贝程序,通过模拟管道文件的实现(管道定义、创建管道、读管道程序和写管道程序程序实现)

编写线程并发拷贝程序,通过模拟管道文件的实现(管道定义、创建管道、读管道程序和写管道程序程序实现),第1张

#include <sys/wait.h>

#include <assert.h>

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

int main(int argc, char *argv[])

{

int pfd[2]

pid_t cpid

char buf

assert(argc == 2)

if (pipe(pfd) == -1)

{

perror("pipe")

exit(EXIT_FAILURE)

}

//创建子进程

cpid = fork()

if (cpid == -1)

{

//创建子进程失败

perror("fork")exit(EXIT_FAILURE)

}

if (cpid == 0)

{/* 子进程中读取管道里面读数据 */

close(pfd[1]) /* 关闭不使用的管道写入端 */

while (read(pfd[0], &buf, 1) >0)

{

write(STDOUT_FILENO, &buf, 1)//在标准的输出设备上输出读取管到的内容

}

write(STDOUT_FILENO, "\n", 1)

close(pfd[0])

_exit(EXIT_SUCCESS)

}

else

{ /* 父进程将参数 argv[1]字符串 写入管道 */

close(pfd[0]) /* 关闭不使用的管道读取端 */

write(pfd[1], argv[1], strlen(argv[1]))

close(pfd[1]) /* 关闭管道写入端,此时读取端就会收到 EOF 标志*/

wait(NULL)/* 等待子进程运行结束 */

exit(EXIT_SUCCESS)

}

}

拷贝程序,直接将程序的安装目录文件复制,然后粘贴在另外一台电脑上即可,但是拷贝后的程序是否可以使用主要取决于以下因素:

1、一般的来说有些程序可以直接拷贝,然后在另外一台电脑上可以用;

2、有些程序需要依赖于系统环境,如注册表,各种插件,环境变量等等,安装程序不止是吧程序解压到的电脑里,同时也做了这些事,如果想通过现有程序在不使用安装包的情况下就拷贝到另一台电脑里,就要手动安装程序,这是没有一个通用的方法的。不推荐使用。

或者可以到网上找注册机来完成重新注册,这也是可以完成一部分这个工作的。

3、有些程序限定了id或者ip,所以只有特定的几台电脑可以使用,如果转了程序会导致程序无法使用。

综合以上因素,拷贝程序,一定要考虑到程序支持不支持拷贝直接使用,还是需要注册表,或者是限制了ip或者id,转到其他电脑上就无法使用!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11325283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存