linux - Unix - 使用 fork() 的进程

标签 linux unix process fork

我正在尝试解决一个问题,但我不知道我必须做什么。问题是:

"创建一个父进程,从命令行接收n个文件名arg1,arg2,...,argn。父进程创建n-2个子进程。每个子进程接收两个参数:i,argi。argi如果 i>2,文件将被修改:从 argi 文件中删除 i 的倍数位置上的每个字节。”

这是我到目前为止所做的:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[]){
printf("Creating a child\n");
int i;
for(i=0;i<argc-2;i++){
 if(fork()==0){
 printf("CHILD %d!\n",i+1);
 exit(0);
 }
}
wait(0);
}

你有什么建议吗?

最佳答案

您最好从 2 到 argc-1(含)计算循环。由于您正在执行 argc-2 fork ,因此您也应该等待 argc-2 而不是一次等待。除此之外,您只是读入一个文件并在删除指定位后将其写回。

关于linux - Unix - 使用 fork() 的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15933684/

相关文章:

linux - 加载程序的地址空间中是否加载了 linux 应用程序?

ruby - 使用 bundler 安装二进制 gem

c++ - 如何找到链接到错误版本 Qt 的部分代码?

unix - 从 C/C++ 应用程序启动 systemd 服务或调用 D-Bus 服务

linux - 如何使用 awk 或 sed 将几行转置为列

linux - 我的 linux bash $$ 不匹配/proc/self 链接?

java - Linux top命令如何确定Java进程的状态?

linux - 我如何判断一个进程当前是否在运行时 fork ?

linux - 如何使用 Grep 命令查找文本文件中的特定值

linux - 尽管交互式 shell 功能正常,但 Bash 功能不适用于远程 ssh 命令执行