这是我正在编写的源代码.我正在try 使用信号进行字符串传输.我不想增加等待时间,所以我使用了PAUSE()函数.当客户端发送信号时,它会暂停并等待服务器完成处理.然而,当收到反馈并且程序崩溃时,客户端不会继续.程序崩溃,退出代码为138.我是不是犯了一个关于暂停()的错误,或者这是另一个问题?
#define _DEFAULT_SOURCE
#define _XOPEN_SOURCE 700
#define WAIT_TIME 100
#include "libft.h"
#include "ft_printf.h"
#include <unistd.h>
#include <signal.h>
void send_signal(int pid, char *str)
{
int i;
while (*str)
{
i = (sizeof(char) * 8) - 1;
while (i >= 0)
{
if (*str & (1 << i))
kill(pid, SIGUSR1);
else
kill(pid, SIGUSR2);
pause();
//ft_printf("worked");
i--;
}
str++;
}
}
int main(int argc, char **argv)
{
int i;
int pid;
i = 0;
if (argc != 3)
{
ft_printf("Error: Wrong number of arguments.");
exit(EXIT_FAILURE);
}
while (argv[1][i])
{
if (!ft_isdigit(argv[1][i++]))
{
ft_printf("Error: Invalid process ID.");
exit(EXIT_FAILURE);
}
}
pid = ft_atoi(argv[1]);
ft_printf("%s, %d\n", argv[2], getpid());
send_signal(pid, argv[2]);
return (0);
}
#define _DEFAULT_SOURCE
#define _XOPEN_SOURCE 700
#define WAIT_TIME 100
#include "libft.h"
#include "ft_printf.h"
#include <unistd.h>
#include <signal.h>
void send_signal(int pid, char *str)
{
int i;
while (*str)
{
i = (sizeof(char) * 8) - 1;
while (i >= 0)
{
if (*str & (1 << i))
kill(pid, SIGUSR1);
else
kill(pid, SIGUSR2);
pause();
//ft_printf("worked");
i--;
}
str++;
}
}
int main(int argc, char **argv)
{
int i;
int pid;
i = 0;
if (argc != 3)
{
ft_printf("Error: Wrong number of arguments.");
exit(EXIT_FAILURE);
}
while (argv[1][i])
{
if (!ft_isdigit(argv[1][i++]))
{
ft_printf("Error: Invalid process ID.");
exit(EXIT_FAILURE);
}
}
pid = ft_atoi(argv[1]);
ft_printf("%s, %d\n", argv[2], getpid());
send_signal(pid, argv[2]);
return (0);
}