标签: init

为什么在内核模块编程中使用__exit?

如果在模块内置到内核中或者不允许模块卸载的情况下不会进行任何内存分配,那么为什么首先要使用它呢?如果我错了/假设有任何错误,请纠正我。

编辑-我也无法理解它的用途是什么__exitmodule_exit()应该够还是不够?

initialization init kernel-module linux-kernel

2
推荐指数
1
解决办法
1210
查看次数

Java 应用程序作为 systemd 服务

我正在尝试在 CentOS7 中将 java 应用程序作为系统服务运行。该 jar 应该由特定用户运行:appuser。我有一个 shell 脚本,它使用以下命令运行 jar。整个脚本要大得多,因为它还处理停止、重新启动和状态,但这是开始部分:

servicename="myservice"
user="appuser"
pid_file="/var/run/$servicename.pid"
get_pid_from_file() {
  cat "$pid_file"
}
get_pids() {
  (ps -ef | grep myjar | grep $user | grep -v grep | awk '{print $2}')
}

is_running() {
  ! [ -z "`get_pids`" ] || ([ -f "$pid_file" ] && ps `get_pid_from_file` > /dev/null 2>&1)
}
case "$1" in
  start)
    if is_running; then
      echo "Already started"
    else
      case "$2" in
        *)
    su -s /bin/sh $user -c "cd /app/myworkingdir ; java …
Run Code Online (Sandbox Code Playgroud)

java linux service init centos7

2
推荐指数
1
解决办法
5623
查看次数

为什么 Ubuntu 18.04 使用 `/sbin/init` 而不是 `systemd`?

首先,这是我的系统环境:

# cat /proc/version
Linux version 4.15.0-52-generic (buildd@lgw01-amd64-051) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) #56-Ubuntu SMP Tue Jun 4 22:49:08 UTC 2019

# cat /etc/issue
Ubuntu 18.04.2 LTS \n \l
Run Code Online (Sandbox Code Playgroud)

参考这个Ubuntu Wiki,ubuntu从15.04开始默认使用Systemd,Systemd以PID 1作为运行/sbin/init。但是,我在 ubuntu 18.04 上发现了不同的结果:

# ps aux | awk '$2==1{print $0}'
root         1  0.0  0.8 159692  8784 ?        Ss   Oct24   0:21 /sbin/init noibrs splash

# lsof -p 1 | grep txt
systemd   1 root  txt       REG              252,1  1595792     927033 /lib/systemd/systemd
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:

  1. 为什么 Ubuntu 18.04 使用 …

linux ubuntu init systemd

2
推荐指数
1
解决办法
4796
查看次数

如何让 bash 脚本永远作为系统后台进程运行?

我有一个脚本(sync.sh),它在内部运行 while 循环以进行同步。

#!/bin/bash
while :
do
     #my PHP scripts runs parallel 

     wait
     sleep 60
done
Run Code Online (Sandbox Code Playgroud)

我想在我的虚拟机中永远独立运行这个脚本。

我知道我可以使用 nohup, disown 命令将此 sh 文件作为后台进程运行。

但我想知道的是?如何在系统重新启动时运行此 .sh 文件,或者它的进程被终止。如何在 Ubuntu VM 中自动启动 .sh 文件而无需终端命令。(就像我们在系统启动时启动 Apache、MySQL 服务一样)

提前致谢。

bash shell ubuntu init

2
推荐指数
1
解决办法
3061
查看次数

Swift 在便利 init 中解开可选 init

是否可以在便利 init 内以某种方式解开可选 init ?

convenience init(...) {
   self.init?(...) ?? self.init()
}
Run Code Online (Sandbox Code Playgroud)

实际上,我正在尝试为以下内容提供便利UIColor

extension UIColor {
    convenience init(for item: ItemType) {
       self.init(named: item.rawValue) ?? self.init() // something like this
       //self.init(named: item.rawValue)! // works
    }
}
Run Code Online (Sandbox Code Playgroud)

init swift option-type

2
推荐指数
1
解决办法
510
查看次数

如何选择性地初始化@FetchRequest

我的 SwiftUI 项目中有以下代码

@FetchRequest private var step: FetchedResults<Steps>
private var processID: UUID
private var stepID: UUID?

init(procID: UUID, stepID: UUID?) {
    if stepID != nil {
        let predicate = NSPredicate(format: "id == %@", stepID! as CVarArg)
        _step = FetchRequest<Steps>(sortDescriptors: [], predicate: predicate)
    }
    processID = procID
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以以某种方式从 init() 返回空步骤 FetchRequest,以防传递的 stepID 为零。当前未编译它,因为步骤 var 未初始化。我试图使其成为可选的,但编译器不喜欢它。

init swiftui fetchrequest

2
推荐指数
1
解决办法
737
查看次数

golang中可以跳过init方法吗?

我在一个大型项目中以调试模式运行单元测试。然而,这个项目引用了太多的lib,这导致我在执行单个测试时首先执行这些lib的init函数。这需要很多时间,所以我希望有一种方法可以跳过 init 函数。

我没有找到任何可以尝试的东西。

unit-testing init go

2
推荐指数
1
解决办法
458
查看次数

拥有数组dealloc'd时没有调用-dealloc方法......应该吗?

以下是Foundation应用程序中的两段Objective-C代码.这段代码在一个函数中:

    [arrayOfObjects addObject:[[TheShape alloc] init]];
    NSLog(@"%@", arrayOfObjects); // log verifies "<TheShape..." is in the array
    [arrayOfObjects release];
Run Code Online (Sandbox Code Playgroud)

在我的TheShape类中,我有这个dealloc覆盖方法:

    - (void)dealloc {
        NSLog(@"TheShape dealloc called.");
        [super dealloc];
    }
Run Code Online (Sandbox Code Playgroud)

虽然我的程序不起作用,但它并不像我期望的那样工作.当[arrayOfObjects release]发送消息时,我希望看到的"TheShape的dealloc ..."字符串出现在日志中.它没有.

Q1:为什么不呢?

所以我挖了一些并简化了一些事情.如果我做一些更简单的事情:

    TheShape *aShape = [[TheShape alloc] init];
    [aShape release];
Run Code Online (Sandbox Code Playgroud)

调试消息仍未出现在日志中.

Q2:为什么不呢?

但如果我这样做:

    TheShape *aShape = [TheShape new];
    [aShape release];
Run Code Online (Sandbox Code Playgroud)

调试消息确实出现在日志中.如果我将第一个样本中的alloc/init更改为,则调试消息也会出现在日志中new.

Q3:为什么?

很显然,我失去了一些东西在分配/初始化/释放周期概念(Q的1和2),并在假想的等效newalloc/init(Q3).任何人都可以指点我的教程,对于像我这样难以思考的事情来解释一下吗?

谢谢,

法案

release objective-c init new-operator alloc

1
推荐指数
1
解决办法
915
查看次数

为什么在创建对象之前调用__init__?

class Point(object): 

    def __init__(self, x=0, y=0):
        self.__x = x
        self.__y = y
        print 'point ({x},{y}) created.'.format( x=self.__x, y=self.__y )

class Line(object):

    def __init__(self, start_point=Point(), end_point=Point()):
        print 'Line.__init__ called.'
        self.start = start_point
        self.end = end_point

def test_line():
    p1 = Point(1,1)
    p2 = Point(2,2)
    line1 = Line(p1, p2)

if __name__=='__main__':
    test_line()
Run Code Online (Sandbox Code Playgroud)

当我运行此脚本时,它会给出结果:

point (0,0) created.
point (0,0) created.
point (1,1) created.
point (2,2) created.
Line.__init__ called.
Run Code Online (Sandbox Code Playgroud)

我不知道为什么在创建line1之前调用Point .__ init().

python init

1
推荐指数
1
解决办法
123
查看次数

将此枚举传递给CTOR有什么问题?

我的代码:

#include <iostream>

enum EnvelopeMultiPointsType {
    ENVELOPE_MULTI_POINTS_TYPE_NORMAL = 0,
    ENVELOPE_MULTI_POINTS_TYPE_KICK_PITCH,
    kNumEnvelopeMultiPointsTypes
};

class EnvelopeMultiPoints
{
public:
    EnvelopeMultiPoints(EnvelopeMultiPointsType type) : mType(type) { 
        std::cout << mType << std::endl;
    }
    ~EnvelopeMultiPoints() { };

private:
    EnvelopeMultiPointsType mType;
};

class Test
{
public:
    Test() { };
    ~Test() { };

private:
    EnvelopeMultiPoints mEnv(EnvelopeMultiPointsType::ENVELOPE_MULTI_POINTS_TYPE_NORMAL);
};

int main()
{
    Test test;
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法使用该枚举初始化一个类.不知道为什么.我在这里错过了什么?

在线编译器在'EnvelopeMultiPointsType'中没有提到名为'ENVELOPE_MULTI_POINTS_TYPE_NORMAL'的类型,但它在上面声明.

c++ enums class init

1
推荐指数
1
解决办法
35
查看次数