首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

记一个openwrt reboot异步信号处理死锁问题

此处 reboot 是一个指向 busybox 的软链接,从 help 信息 -f Force (don't go through init) 中可以看出 rebootreboot -f 的区别在于...reboot 会先通知 init 进程进行一系列操作,而 reboot -f 则直接调内核。...S interruptible sleep (waiting for an event to complete)` 但只知道这个没太大作用,我们需要更多信息,幸好 linux 还有 proc 文件系统...上去,中途开始跟踪,例如目前这种情况,在 reboot 之前先运行 strace -p 1,即可观察卡住前 1号进程 都执行了什么操作。...可以参考 Linux 多线程应用中如何编写安全的信号处理函数 这里贴下 man pthread_sigmask 中的例子,主线程中先屏蔽一些信号,然后创建了一个特定的线程,通过 sigwait 来检测处理这些信号

2.1K20

P2P

P2P没有绝对的服务器和客户端之分。连接的双方分别作为临时的服务器和客户端。P2P通信的双方还可能更换IP地址。 P2P的一个最为流行的应用是BT种子,相信各位老司机对BT种子和迅雷都不陌生吧!...P2P的出现使得服务器在处理文件传输的时候,能够减少服务器的负载。在P2P中,每个对等方能够向任何其他的对等方重新分发它收的的该文件的任何部分。...因此,最短上传时间是F/Us.同时假设N个用户中最慢的下载速率是s,第i个用户的上传速率是Ui.那么我们可以得到P2P架构中最快的文件分发时间。...而对P2P传输没有贡献。 P2P的应用现在已经非常多了,大家经常使用的迅雷去下载种子。...另外一个每天都在使用的应用QQ,它也广泛的使用了P2P技术。即时消息就是基于P2P的。

2.3K10

int(*p) int*p

int a[4]={1,2,3,4}; int (*p)[4]; p=&a; printf("%d\n",(*p)[3]); printf("%d\n",*p);...int main() { int *p[4]; int a=6; p[1]=&a; printf("%d\n",*p[1]); return 0; } int *p[...由于[]比*优先级更高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,它有4个元素,然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素(也就是一个指针变量)都可以指向一个整形变量...数组里面放的是指针,简单的说定义了4个指针,分别是*p[0] *p[1] *p[2] *p[3],相当于将这四个指针打包到这个数组中 (*p)[4]是数组指针,他是指针并且是一个指向一维数组的指针。...[4]; //数组指针 p是指针,指向一维数组,每个一维数组有4个int元素 int i,j; p=m; //p是指针,可以直接指向二维数组 printf("--数组指针输出元素--\n");

1.8K10
领券