【发布时间】:2017-09-17 10:51:56
【问题描述】:
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
void *f1(void *p)
{
system("./while.exe");
}
main()
{
int i=0;
int k=3;
int j=0;
void *status
while(i<k)
{
thread_id = pthread_create(&thread_handler, NULL, &f1,NULL);
pthread_join(thread_pram_play_handler, &status);
//if(((int *)status)==0)
i++;
}//while
while(1)
{
printf("\nEnte value ");
scanf("%d",&j);
if(j==1)
{
system("pkill while.exe");
}
}
}
而.c 包含:
#include<stdio.h>
main()
{
int i=0;
for(i=0;i<25;i++)
{
printf("\nHI");
}
}
在这里,我只是在编写与我的实际代码相似的代码。 我的要求 1.我想在一个完成后执行三个线程。 2. 我想在使用 pkill 之间终止它。
使用 pthread_join 我可以一个接一个地执行线程,但我无法杀死。
如果我不使用 pthread_join,那么线程会同时执行并能够杀死它们。我认为它正在阻塞进程。
我无法满足我的要求。所以要么我必须改变线程执行方式,要么必须改变终止线程的方式。
谢谢
我们将不胜感激。
【问题讨论】:
-
所示代码无法编译。这不好。
-
还有它的代码格式错误,难以阅读。这也不好。
-
更重要的是至少应该是
int main(void)。 -
这段代码和我的实际代码完全相似。我的实际代码包含许多相关文件,它会很大,所以只是为了很好地传达我的问题。我写了这个程序。
-
"只是为了很好地表达我的问题。我编写了这个程序。" 这是正确的方法,是的,如果代码可以编译的话。
标签: c linux process pthreads kill