Думайте некасательно параметра, как являющегося указателем, и касательно параметра как двойной указатель. Это помогло мне больше всего.
Вы почти никогда не должны проходить мимо значений касательно, Я подозреваю, что, если бы это не было для проблем interop, команда .NET никогда не включала бы его в исходную спецификацию. OO способ иметь дело с большей частью проблемы, которые касательно параметров решают, к:
Для нескольких возвращаемых значений
Для примитивов, которые изменяются в методе как результат вызова метода (метод имеет побочные эффекты на примитивных параметрах)
Семафоры не являются мьютексами. Вы их не «держите». Если процесс заблокирован, это означает, что он ждет, пока кто-то другой выполнит над ним операцию «вверх» или «V». Не существует инструмента ядра, который сообщал бы вам, каким будет будущее поведение программного обеспечения.
Может быть и более простой способ, но вы можете использовать вызов semctl () с командой GETPID. Это должно вернуть процесс, выполнивший последний вызов semop () для семафора. Это может быть или не быть вашим мошенническим процессом, но, вероятно, это хороший намек.