[使用系统调用时的Printf()

问题描述 投票:1回答:1

我正在处理的家庭作业问题很简单,但是我是C语言的新手,所以我可能会陷入语法错误。我想做的是从另一个程序中调用一个程序,使用fork()分配一个新进程,然后等待子进程使用waitpid()完成。我正在尝试A.使waitpid()工作,并且B.获得一个简单的测试消息以在孩子完成后显示。

./ countprimes正在通过./countmaster远程运行。 ./countprimes工作正常,它只是将x到y的所有素数打印到屏幕上。 ./countmaster调用./countprimes。

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

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

         int processid = fork();
         int status;
         char* arguments[4];
         arguments[0]="./countprimes";
         arguments[1]="10";
         arguments[2]="30";
         arguments[3]=NULL;

         if(processid == 0)
                  execvp("./countprimes,arguments);
         else
                  waitpid(processid, &status, 0);
                  printf("test1")
}

我希望看到:计数素数实例从10开始到29结束计算10至29的素数实例为6TEST1

我看到的是没有test1消息。我也收到gcc警告:函数'waitpid'的隐式声明;您是说'getpid'吗?

c linux system-calls
1个回答
0
投票

我可以看到一些语法错误和缺少的标头:

#include <unistd.h>
#include <stdio.h>
#include <sys/wait.h>

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

         int processid = fork();
         int status;
         char* arguments[4];
         arguments[0]="./countprimes";
         arguments[1]="10";
         arguments[2]="30";
         arguments[3]=NULL;

         if(processid == 0) {
             execvp("./countprimes",arguments);
         }
         else {
             waitpid(processid, &status, 0);
             printf("test1");
         }
}

缺少标题肯定会删除有关waitpid的警告消息。

© www.soinside.com 2019 - 2024. All rights reserved.