草庐IT

POSIX_VISIBLE

全部标签

c - 是否可以在同一父进程(LINUX、POSIX)创建的两个子进程之间建立管道

我有多个子进程由同一个父进程“fork”,我尝试在所有这些子进程之间构建pipe连接,如链表结构。child1将数据发送给child2,child2给child3....childN给child1。有什么合适的方法吗?此外,如果我在进程之间创建和通信,我如何强制父进程“等待”自wait()或waitpid()以来的所有进程完成他们的工作>等待第一个完成的过程,但我需要等待所有过程。这是另一个问题。谢谢... 最佳答案 这本质上就是shell在构建重定向链时所做的事情,即类似于ls|grepfoo|sort|uniq有一些优秀的Uni

c - POSIX 取消点应该如何表现?

我一直在研究glibc/nptl的取消点实现,并将其与POSIX进行比较,除非我弄错了,否则它是完全错误的。使用的基本模型是:intoldtype=LIBC_ASYNC_CANCEL();/*switchtoasynchronouscancellationmode*/intresult=INLINE_SYSCALL(...);LIBC_CANCEL_RESET(oldtype);根据POSIX:Theside-effectsofactinguponacancellationrequestwhilesuspendedduringacallofafunctionarethesameasth

c - POSIX 取消点应该如何表现?

我一直在研究glibc/nptl的取消点实现,并将其与POSIX进行比较,除非我弄错了,否则它是完全错误的。使用的基本模型是:intoldtype=LIBC_ASYNC_CANCEL();/*switchtoasynchronouscancellationmode*/intresult=INLINE_SYSCALL(...);LIBC_CANCEL_RESET(oldtype);根据POSIX:Theside-effectsofactinguponacancellationrequestwhilesuspendedduringacallofafunctionarethesameasth

linux - Posix 消息队列和命令行?

我正在编写一些代码来用POSIX消息队列替换TCP套接字。有时程序会崩溃(仍在开发中)并且创建的队列没有被删除(没有执行:mq_close()+mq_unlink())。当我再次运行代码时,这会导致问题。有没有办法使用命令行删除/删除这些队列?我尝试使用:ipcs-q。这未能列出任何队列。我试过了:lsof|grep队列名称。他们确实出现在这里。理想情况下,我想使用:ipcrm。 最佳答案 POSIXIPC对象在虚拟文件系统中实现为文件。可以使用ls和rm列出和删除这些文件。要使用POSIX消息队列执行此操作,我们必须使用以下命令安

linux - Posix 消息队列和命令行?

我正在编写一些代码来用POSIX消息队列替换TCP套接字。有时程序会崩溃(仍在开发中)并且创建的队列没有被删除(没有执行:mq_close()+mq_unlink())。当我再次运行代码时,这会导致问题。有没有办法使用命令行删除/删除这些队列?我尝试使用:ipcs-q。这未能列出任何队列。我试过了:lsof|grep队列名称。他们确实出现在这里。理想情况下,我想使用:ipcrm。 最佳答案 POSIXIPC对象在虚拟文件系统中实现为文件。可以使用ls和rm列出和删除这些文件。要使用POSIX消息队列执行此操作,我们必须使用以下命令安

c - 为什么 posix c 中的 regexec() 总是返回第一个匹配项,它如何返回所有匹配位置只运行一次?

现在当我想返回str中的所有匹配位置时,例如:abcd123abcd123abcd假设我想得到所有的“abcd”,我必须使用regexec(),得到第一个位置:0、3,然后我将使用:123abcd123abcd作为再次使用regexec()的新字符串,依此类推。我阅读了有关regexec()的手册,它说:intregexec(constregex_t*preg,constchar*string,size_tnmatch,regmatch_tpmatch[],inteflags);nmatchandpmatchareusedtoprovideinformationregardingthe

c - 为什么 posix c 中的 regexec() 总是返回第一个匹配项,它如何返回所有匹配位置只运行一次?

现在当我想返回str中的所有匹配位置时,例如:abcd123abcd123abcd假设我想得到所有的“abcd”,我必须使用regexec(),得到第一个位置:0、3,然后我将使用:123abcd123abcd作为再次使用regexec()的新字符串,依此类推。我阅读了有关regexec()的手册,它说:intregexec(constregex_t*preg,constchar*string,size_tnmatch,regmatch_tpmatch[],inteflags);nmatchandpmatchareusedtoprovideinformationregardingthe

c - 如何在不删除项目的情况下查看 Linux (POSIX) 消息队列?

我需要查看消息队列而不删除它们。仅当消息队列项符合特定条件时,我才会继续删除它。这个怎么做?以下是我知道的API——但似乎没有一个支持窥视。mq_close()—关闭消息队列mq_getattr()—获取消息队列的当前属性mq_notify()—当队列变为非空时通知调用进程mq_open()—打开或创建消息队列mq_receive()—从队列接收消息mq_send()—将消息放入消息队列mq_setattr()—为消息队列设置标志mq_unlink()—取消链接(即删除)消息队列有没有办法在不删除消息的情况下查看消息? 最佳答案 窥

c - 如何在不删除项目的情况下查看 Linux (POSIX) 消息队列?

我需要查看消息队列而不删除它们。仅当消息队列项符合特定条件时,我才会继续删除它。这个怎么做?以下是我知道的API——但似乎没有一个支持窥视。mq_close()—关闭消息队列mq_getattr()—获取消息队列的当前属性mq_notify()—当队列变为非空时通知调用进程mq_open()—打开或创建消息队列mq_receive()—从队列接收消息mq_send()—将消息放入消息队列mq_setattr()—为消息队列设置标志mq_unlink()—取消链接(即删除)消息队列有没有办法在不删除消息的情况下查看消息? 最佳答案 窥

c - 如何在 C 中的 fork 进程上使用 POSIX 信号量?

我想fork多个进程,然后对它们使用信号量。这是我尝试过的:sem_init(&sem,1,1);/*semaphore*,pshared,value*/...if(pid!=0){/*parentprocess*/wait(NULL);/*waitallchildprocesses*/printf("\nParent:Allchildrenhaveexited.\n");../*cleanupsemaphores*/sem_destroy(&sem);exit(0);}else{/*childprocess*/sem_wait(&sem);/*Poperation*/printf("