小编Pra*_*dar的帖子

子进程中的execl()没有结束

我写了一个简单的程序来理解execl()的概念.这是我的计划

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

int main()
{
    pid_t pid;
    pid = fork();
    if(pid == 0)
    {
        execl("/bin/sh","sh","-c","ls -l *.c", NULL);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行它时,它会显示扩展名为".c"的文件列表.但是,似乎子进程没有结束,光标一直闪烁.

srico@ubuntu:~/Desktop/c$ -rw-rw-r-- 1 srico srico   84 Jun 30 08:30 cmdacc.c
-rw-rw-r-- 1 srico srico  138 Jul  4 11:08 execfun.c
-rw-rw-r-- 1 srico srico  343 Jul  4 10:27 execvp1.c
-rw-rw-r-- 1 srico srico  167 Jun 23 08:20 filechar.c
-rw-rw-r-- 1 srico srico  195 Jun 23 11:20 fileline.c
-rw-rw-r-- 1 srico srico  203 Jun 27 07:17 filestat.c
-rw-rw-r-- 1 srico …
Run Code Online (Sandbox Code Playgroud)

c exec

2
推荐指数
1
解决办法
2974
查看次数

在c中,如何让线程等待其他线程完成

我有一个程序,我创建了两个线程.在一个线程中,我为整数a和b分配了一个值.在第二个线程中,我想访问a和b,以更改其值.

#include <stdio.h>
#include <pthread.h>

struct data {
    int a;
    int b;
};

struct data temp;

void *assign(void *temp)
{
    struct data *new;

    new = (struct data *) temp;
    new->a = 2;
    new->b = 2;
    printf("You are now in thread1..\n The value of a and b is: %d, %d", new->a + 1, new->b + 1);
    printf("\n");
    pthread_exit(NULL);
}

void *add(void *temp1)
{
    struct data *new1;
    new1 = (struct data *) temp1;
    printf("You are now in thread 2\nValue of a and …
Run Code Online (Sandbox Code Playgroud)

c multithreading

0
推荐指数
1
解决办法
7827
查看次数

标签 统计

c ×2

exec ×1

multithreading ×1