【发布时间】:2015-05-24 18:57:22
【问题描述】:
我正在编写一个需要创建多个进程的程序。假设这个数字是 3。我希望这些进程中的每一个都从 1 到 5 进行计数和输出,并在每次计数/输出之间休眠 1 秒。我试图以下列方式做到这一点,但我的 sleep(1) 没有像被打断一样工作。我将不胜感激有关该主题的一些背景知识,我做错了什么以及如何解决此问题。到目前为止,这是我的代码。
/*
* Creates N > 2 processes.
*/
int main(int argc, const char * argv[])
{
pid_t pid;
for(int i = 0; i < N_PROC; i++) {
pid = fork();
if(pid == 0) {
ProcessWork();
exit(0);
}
}
}
/*
* Work of a single process.
*/
void ProcessWork() {
char buffer[BUF_SIZE];
for (int i = 1; i <= 5; i++) {
sleep(1);
sprintf(buffer, "PID = %d, count = %d\n", getpid(), i);
write(1, buffer, strlen(buffer));
}
}
【问题讨论】:
-
“sleep(1) 不起作用”是什么意思?
-
您的示例在这里完美运行。你到底有什么问题?
-
多线程是更好的选择
标签: c process multiprocessing sleep