c - 等待子进程一段时间

标签 c linux unix parent-child

<分区>

我正在尝试通过做一些练习来学习在 UNIX 上编写 C 程序,但我被困在了这个练习上。在这个练习中,我需要父进程等待子进程做某事的确切时间,然后父进程应该通过提供子进程的 ID 来终止它。这是我的代码。

int main()
{
    int pid;
    pid = fork();
    if (pid < 0)
    {
        printf("\n Error ");
        exit(1); 
    }
    else if (pid == 0)
    {
        printf("\n Id of child is %d ",getpid());
    }
    else
    {
        sleep 3;
        kill(0);
        exit(1);
    }
}

问题如下。我不确定 sleep 3 是否意味着父进程为子进程等待 3 秒。我考虑过这样的方法,但它似乎在等待子进程终止。

int Time;    
waitpid(childPid, &Time, 0); 

if (Time == 0) 
{
    printf("Correct"); 
}

if (Time == 1)      
{
    printf("Error");    
}

第二个问题可能更简单,但我无法找出是哪个函数完成的。子进程(或父进程,无关紧要)如何执行内置程序?

最佳答案

所以我很困惑,你到底想做什么?要回答您的问题,要执行内置函数,您可以使用 system()(也可以使用 exec() 系列函数)(检查 http://linux.die.net/man/3/system ).使用 wait()waitpid() 将等待(阻塞)子进程终止,您可以在子进程中使用 signal() (使用 SIGCHLD 之类的东西),如果你想向父级指示某些内容,那么你可以让父级终止它。您还可以使用 alarm() 让子进程在指定时间后终止。

关于c - 等待子进程一段时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35516622/

相关文章:

c - 函数指针

linux - 了解 2 个 shell 函数

c - regcmp 模式 $0 含义

linux - 将连续的 awk 调用合并为一个

c - 如何用C发送差分UART信号

c - 菜单式程序

c - 在 FreeRTOS 中使用 Mutex 实现两个任务同步

c - 使用 glib 的哈希表的行为

linux - 如何逐行解析df?

linux - 从文件中提取文本+变量不起作用