- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这段代码,它基本上在信号量上生成一个 P,编号为 sem
。信号量在池中。问题是有时我得到 Invalid argument
并且我不知道为什么。
bool sem_p(key_t key, int sem){
int semid = semget(key, sem, 0666);
struct sembuf sb = {sem, -1, 0};
if(semop(semid, &sb, 1) == -1){
perror("sem p");
printf("sem %d\n", sem);
return FALSE;
}
return TRUE;
}
当该函数被调用时,它打印
sem p: Invalid argument
最佳答案
检查是否
int semid = semget(key, sem, 0666);
返回成功或失败。正如@VladLazaranenko 提到的那样,可能会出现很多错误。检查您调用的每个函数的每个返回代码(如果它们返回值)- 对于生产系统。
关于c - semop : Invalid argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531722/
我在一个进程中有两个线程。这两个线程竞争共享内存,试图通过信号量进行同步。但是,当一个线程紧挨着另一个线程调用 semop 函数时,我随机遇到了 errno 4 失败。我做了一点挖掘,发现调用似乎被系
我正在创建一个多进程应用程序,其中包含一个共享内存段和一个锁定它的信号量以及信号处理程序。 每当我锁定和解锁我的信号量时,一切正常,只要它在我的主程序(或其中一个子程序)中。 当我在信号处理程序中时出
关于Beej Guide ,有一个说法如下 “当您第一次创建一些信号量时,它们都未初始化;需要再次调用才能将它们标记为空闲。” 最初我创建的信号量计数为 5。 #define SEM_COUNT 5
我在进程 A 中设置了(semget + init 为 1)一个信号量。 fork A,并得到 B。 fork B 并得到 C(进程 B、C 的代码位于另一个 .c 文件中,因此我使用 extern
我有这段代码,它基本上在信号量上生成一个 P,编号为 sem。信号量在池中。问题是有时我得到 Invalid argument 并且我不知道为什么。 bool sem_p(key_t key, int
当尝试运行此代码时:首先它会为每个信号量打印“Process some_id BEFORE enter”(2 次)。然后它挂起。哪里不对? # include # include # includ
#define MAX 2 int main(){ int mutex = semget(ftok("/usr",'P'),1,IPC_CREAT|0666); int wrt = s
我在 php 脚本中使用以下代码片段来安全地更新共享资源。 $lock_id = sem_get( ftok( 'tmp/this.lock', 'r')); sem_acquire($lock_id
我有两个信号量应该自动更改。 union semun su; struct sembuf sb[2]; int num = 2; semid = semget(num, 3, IPC_
这段代码我真的遇到了麻烦。我有一个缓冲区和一个方法 Produce() ,它应该是非阻塞的,这意味着当许多进程尝试 Produce() 时,除了一个进程之外,所有这些进程都应该返回/或失败。 我在 m
正如您在信号量 System V 文档 ( http://man7.org/linux/man-pages/man2/semop.2.html ) 中看到的,有一部分声明了以下内容: EXAMPLE
我正在使用 Sys V Semaphores 测试一些代码,以了解其从各种事件中恢复的能力,对于其中一项测试,我在进程处于其关键部分时删除了信号量集(从终端)。当需要再次调用 semop 来释放锁时,
我正在检查 semop() 函数,结构 sembuf 的标志值可能是 SEM_UNDO 或 IPC_NOWAIT。那么如果我们将标志值作为 0 传递,那么行为会是什么?我在某处读到它是没有操作的。这意
我正在研究 Beej's Guide to Unix IPC 中的信号量示例程序. 示例程序包含以下信号量初始化代码。我只是从中发布与问题相关的片段。要查看完整代码,请访问我在上面提供的链接。 /*
fork 中的这一行(doc)引起了我的注意: 子项不会从其父项 (semop(2)) 继承信号量调整。 这是什么意思? 这个程序(下面的代码)永远不会打印“End (child)”: #defin
因此,如果我有一个信号量集 semid,带有num_of_sems 个信号量和一个sembuf *deleter_searchers_down struct sembuf *deleter_searc
我有一个代码,我正在处理一组 3 个信号量。我有两套struct sembuf wait[3],signal[3]; 我已经初始化了它们中的每一个。 wait初始化为-1,signal初始化为1 然后
我是一名优秀的程序员,十分优秀!