1
假設我有main.c
:如何在調用unix中的raise時共享/傳遞參數?
void myfunc(int num)
{
printf("%d \n", num);
signal(SIGUSR1, myfunc);
}
int main(void)
{
void (*prev_fn)(int);
prev_fn = signal(SIGUSR1, myfunc);
if (prev_fn == SIG_IGN) signal(SIGUSR1,SIG_IGN);
}
和.so
其中main.c
加載一個foo
函數調用raise
:
raise(SIGUSR1);
我如何打電話時提出,傳遞一個參數char *
除了使用外部緩衝區?
你不能。 'raise()'接受一個'int'參數,沒有別的。另外,你的信號處理程序必須被定義爲void function(int),並且不能添加額外的參數。您希望處理程序具有的任何其他信息必須位於某種全局變量中。 – twalberg
您已經描述了嘗試實施問題解決方案時遇到的絆腳石。也許你可以描述你正在試圖解決的問題,並且我們可以建議一種不同的方法來解決它。 – jxh
@twalberg我不能使用全局變量,因爲foo在.so文件中,而且無法訪問'main.c'中的變量我可以使用'extern'但我不想要。 – 0x90