您好我是linux环境的新手。我正在尝试创建守护进程。
#include<stdio.h>
int main()
{
int a=10,b=10,c;
c=sum(a,b);
printf("%d",c);
return (0);
}
int sum(int a,int b)
{
return a+b;
}
我想创建它的守护进程。我可以知道怎么做到这一点?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:3)
守护程序通常不使用其标准输入和输出流,因此不清楚程序如何作为守护程序运行。并且守护程序通常没有任何终端,因此它不能使用clrscr
。另请阅读tty demystified页面以及daemon(7)。
我建议阅读Linux编程的一些很好的介绍,比如旧的可免费下载ALP(或更新的东西)。我们无法在这里解释所有这些,你需要阅读整本书。另请参阅intro(2)和syscalls(2)。
我还建议您阅读有关操作系统的更多信息,例如:免费提供的Operating Systems: Three Easy Pieces教科书。
您可以使用C程序中的daemon(3)函数将其作为守护程序运行(但是,您可能没有任何输入和输出)。您可能希望使用syslog(3)来记录消息。
您可以考虑shell的job control设施。您可以在后台运行程序(例如,在交互式shell中键入myprog myarg &
)。您可以使用batch
命令。但是,后台进程和批处理作业都不是技术守护进程。
也许您想要编写一些ONC-RPC或JSONRPC或Web API服务器和客户端的代码。你会找到那个库。另请参阅pipe(7),socket(7)
(需要几天或几周才能阅读更多内容)
答案 1 :(得分:1)
首先找到public class CustomView: UIView {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var valueLabel: UILabel!
public convenience init() {
self.init(frame: CGRect.zero)
}
public override convenience init(frame: CGRect) {
self.init(internal: nil)
self.frame = frame
}
public required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
fileprivate func commonInit() {
}
}
fileprivate protocol _CustomView {
}
extension CustomView: _CustomView {
}
fileprivate extension _CustomView {
// Protocol extension initializer - has the ability to assign to self, unlike
// class initializers. Note that the name of this initializer can be anything
// you like, here we've called it init(internal:)
init(internal: Int?) {
self = Bundle.main.loadNibNamed("CustomView", owner:nil, options:nil)![0] as! Self;
}
}
的属性,据我所知,守护进程具有以下属性:
daemon process
应该not
(它本身应该是父母)any parent
。session leader
。root
的文件模式应为mask
。zero
removed
。通过考虑
的上述属性来实现代码un-mounted
或者您可以浏览int i=0;
int main()
{
int pid;
pid=fork();
if(pid!=0) {
/** you can add your task here , whatever you want to run in background **/
exit(0);
}
else
{
setsid();//setting sessions
chdir("/");//root.. should'nt beunmounted
umask(0);
close(0);//all terminal are removed
close(1);
close(2);
while(1)
{
printf("i = %d \n",i);
i++;
}
}
return 0;
}
daemon()
我希望它有所帮助。
答案 2 :(得分:0)
不是编写代码使C程序成为守护进程,而是使用已经成熟的工具,如主管:
答案 3 :(得分:0)
我认为以下内容可行
screen cmd arg1 arg2
您也可以尝试
nohup cmd arg1