标签: init

__init 和 __exit 宏用于内置和可加载模块

我正在阅读有关 linux 内核开发的内容,但我只是阅读了一些我不明白的文字。这是讨论模块的 __init 和 __exit 宏的段落:

这演示了内核 2.2 及更高版本的功能。注意 init 和 cleanup 函数定义的变化。__init 宏会导致 init 函数被丢弃并在 init 函数为内置驱动程序完成后释放其内存,但不是可加载模块。如果您考虑何时调用 init 函数,这是完全合理的。

还有一个 __initdata 与 __init 类似,但用于初始化变量而不是函数。

__exit 宏会在模块内置到内核中时导致函数的省略,并且与 __exit 一样,对可加载模块没有影响。同样,如果您考虑清理功能何时运行

我明白了;__init一旦内置驱动程序的 init 函数完成,宏就会导致 init 函数被丢弃并释放其内存。但为什么?不适用于可加载模块?我无法理解。

我知道这是一件愚蠢的事情,但我想了一段时间,无法完全理解。为什么内置驱动程序而不是可加载模块?__init两者都需要分配的变量、地址等,对吗?

init exit

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

Simple replacement of init to just start console

On a very simple PC, I want to replace Ubuntu 12.04 /sbin/init by the most simple bash script in order to have the very minimum number of running processes. Obviously, no X, no USB, no detection of new hardware, no upgrade, no apt, "nothing", I just need a working console with a DHCP-based Wi-Fi IP address (ssid, passphrase are already stored in /etc/network/interfaces). That's all. Currently, I have tried this in replacement of /sbin/init:

#!/bin/sh
mount -o rw,remount /
mount …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu init

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

cron 作业是否运行非交互式、非登录 shell?

假设我创建了一个cron运行 Zsh 或 Bash 脚本的作业/path/to/shell_script.sh

这样的壳会是non-interactive non-login壳吗?如果是这样,init将执行哪些 shell文件(对于 Bash 和 Zsh)?

shell cron init

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

在声明中或使用 init 初始化 Swift 类变量?

在 Swift 中,您可以在声明变量时在类中初始化变量:

var name: String = "John"
Run Code Online (Sandbox Code Playgroud)

或者你可以用 init 初始化:

var name: String

init(name: String) {
   self.name = name
}
Run Code Online (Sandbox Code Playgroud)

您使用哪个版本以及何时使用?

class init swift

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

如何从视图中将值传递给 Django Form 的 init 方法?

表格.py

class AddDuration(forms.Form):

    def __init__(self, *args, **kwargs): 
        super(AddDuration, self).__init__(*args, **kwargs)
        // set value to relates_to_choices
        relates_to_choices = ????????????? // Something like self.choices
        self.fields['duration'].choices = relates_to_choices

    duration = forms.ChoiceField(required=True)
Run Code Online (Sandbox Code Playgroud)

现在,我有一个包含类的 views.py 文件

class AddDurationView(FormView):
    template_name = 'physician/add_duration.html'
    form_class = AddDurationForm
Run Code Online (Sandbox Code Playgroud)

forms django views init choicefield

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

快速创建饼图

我正在尝试快速创建饼图,并希望从头开始创建代码,而不是使用 3rd 方扩展。

我喜欢它是@IBDesignable 的想法,所以我从这个开始:

import Foundation
import UIKit

@IBDesignable class PieChart: UIView {

  var data:  Dictionary<String,Int>?

  required init(coder aDecoder: NSCoder) {
    super.init(coder:aDecoder)!
    self.contentMode = .Redraw
  }

  override init(frame: CGRect) {
    super.init(frame: frame)
    self.backgroundColor = UIColor.clearColor()
    self.contentMode = .Redraw
  }

  override fun drawRect(rect: CGRect) {
    // draw the chart in here
  }

}
Run Code Online (Sandbox Code Playgroud)

我不确定的是如何最好地将数据放入图表中。我应该有这样的事情:

@IBOutlet weak var pieChart: PieChart!
override func viewDidLoad() {
    pieChart.data = pieData
    pieChart.setNeedsDisplay()
}
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?想必是没有办法在init函数中包含数据吧?

提前致谢!

initialization init pie-chart swift

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

Yocto:删除 System V init 脚本的 bbappend 文件

我目前正在使用 Yocto 安装 dnsmasq,但我想删除自动启动。

所以我创建了一个 .bbappend 文件,我尝试了类似的东西:

pkg_postinst_${PN} () {
    update-rc.d dnsmasq -f remove
}
Run Code Online (Sandbox Code Playgroud)

但它没有用,我不知道如何使用 bbappend 文件删除这个 init 脚本。

谢谢,皮埃尔-奥利维尔

init recipe bitbake yocto

5
推荐指数
2
解决办法
3455
查看次数

Python子类计数器

我有这个python代码。结果是TopTest: attr1=0, attr2=1X 很好,但结果是SubTest: attr1=2, attr2=3Y,我不太明白。

基本上,我有一个类属性,它是一个计数器,它在__init__ method. 当我启动 Y 时,计数器设置为 2,然后才分配属性。我不明白为什么它从 2 开始。子类不应该复制超类并且计数器从 0 重新开始吗?

class AttrDisplay: 
  def gatherAttrs(self):        
    attrs = []        
    for key in sorted(self.__dict__):            
        attrs.append('%s=%s' % (key, getattr(self, key)))        
    return ', '.join(attrs)
  def __repr__(self):        
    return '[%s: %s]' % (self.__class__.__name__, self.gatherAttrs())

class TopTest(AttrDisplay): 
    count = 0        
    def __init__(self):            
        self.attr1 = TopTest.count            
        self.attr2 = TopTest.count+1            
        TopTest.count += 2

class SubTest(TopTest):
    pass

X, Y = TopTest(), SubTest()         
print(X)                            
print(Y)                         
Run Code Online (Sandbox Code Playgroud)

python counter subclass init

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

iOS - 如何使用来自 NIB 的特定框架初始化自定义 UIView

我想知道UIView用特定框架初始化自定义的最干净的方法是什么。

UIView从设计XIB文件。

这是我的实现

class CustomView : UIView {

    @IBOutlet var outletLabel: UILabel!

    public required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupView()
    }

    public override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    private func setupView() {

        // Set text for labels
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我想在我的 ViewController 中初始化它的方式:

let screenSize: CGRect = UIScreen.main.bounds
let screenWidth = screenSize.width
let frame = CGRect(x: 0, y: 0, width: screenWidth - 50, height: 70)

let customView = CustomView.init(frame: frame)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我有一个没有任何插座的白色 …

init xib uiview ios swift

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

Flutter 有状态小部件状态未初始化

我正在使用 Flutter 制作一个命令和控制应用程序,但遇到了一个奇怪的问题。该应用程序的主状态页面显示了一个有状态小部件列表,每个小部件都拥有一个 WebSocket 连接,该连接从连接的机器人平台流式传输状态数据。当机器人本身被硬编码时,这很有效。但是现在我正在动态添加它们(通过条形码扫描),只有第一个小部件显示状态。

使用调试器的进一步调查表明,这是因为仅为列表中的第一个小部件创建了状态。随后添加的窗口小部件越来越成功构建,但没有得到一个状态。这意味着除了添加的第一个小部件之外,不会调用 createState 。我检查了小部件本身是否确实被添加到列表中,并且它们每个都有唯一的哈希码。此外,IOWebSocketChannel 具有唯一的哈希码,并且所有小部件数据对于列表中的不同元素都是正确且唯一的。

关于可能导致此问题的任何想法?

HomePageState 的代码:

class HomePageState extends State<HomePage> {
  String submittedString = "";
  StateContainerState container;
  List<RobotSummary> robotList = [];
  List<String> robotIps = [];
  final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();

  void addRobotToList(String ipAddress) {
    var channel = new IOWebSocketChannel.connect('ws://' + container.slsData.slsIpAddress + ':' + container.slsData.wsPort);
    channel.sink.add("http://" + ipAddress);
    var newConnection = new RobotSummary(key: new UniqueKey(), channel: channel, ipAddress: ipAddress, state: -1, fullAddress: 'http://' + container.slsData.slsIpAddress + ':' + container.slsData.wsPort,); …
Run Code Online (Sandbox Code Playgroud)

stateful init flutter

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