user define signal 1

 

#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#define SIZE 100


void func(int i)
{
    return ;
}

int main() {
    int filedes1[2];
    int filedes2[2];
    while(pipe(filedes1));
    while(pipe(filedes2));
    int pid1,pid2;
    int len,i;
    char a[SIZE];

    pid1 = fork();
        if(pid1) //父进程
        {
            pid2 = fork();
            if(pid2)
            {
                printf("请输入要转换的字符串:");
                scanf("%s",a);
                len = strlen(a);
                write(filedes1[1],&len,sizeof (int));
                write(filedes1[1],a,len+1);
                kill(pid1,10);
                waitpid(pid1,NULL,0);
                waitpid(pid2,NULL,0);
            } else{
                //第二个子进程
                signal(10,func);
                waitpid(pid1,NULL,0);
                read(filedes2[0],&len,sizeof (int));
                read(filedes2[0],a,len+1);
                printf("%s\n",a);
            }
        }else{
            //第一个子进程
            signal(10,func);
            waitpid(getppid(),NULL,0);
            read(filedes1[0],&len,sizeof (int));
            read(filedes1[0],a,len+1);
            i = 0;
            while(a[i]!='\0')
            {
                if(a[i]>='a' && a[i]<='z')
                {
                    a[i]=a[i]-32;
                }else if(a[i]>='A' && a[i]<='Z')
                {
                    a[i]=a[i]+32;
                }
                i++;
            }
            write(filedes2[1],&len,sizeof(int));
            write(filedes2[1],a,len+1);
            kill(pid2,10);
        }
    return 0;
}

多进程和信号,刚刚开始学,在macOS里面用clion没有问题,在乌班图虚拟机运行中会出现user define signal 1,编译没有问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^