alfred_workflow_rust_project/
workflow_background.rs

1use std::fs::OpenOptions;
2use std::io::Write;
3use std::process::Command;
4use std::time::Duration;
5use nix::libc::printf;
6use crate::alfred::AlfredEnv;
7use crate::workflow::AlfredWorkflow;
8use nix::unistd::{fork, ForkResult};
9
10impl AlfredWorkflow {
11    pub fn run_background(&self, f: &dyn Fn(&AlfredWorkflow) -> ()) {
12        let fork_rs = fork();
13        if fork_rs.is_ok() {
14            let fork = fork_rs.unwrap();
15            if fork.is_child() {
16                f(self)
17            }
18        }
19    }
20}
21
22#[test]
23fn test_run_backgroud() {
24    let workflow = AlfredWorkflow::init();
25    workflow.run_background(&cc);
26    print!("hello")
27}
28
29fn cc(v: &AlfredWorkflow) {
30    let mut file = OpenOptions::new()
31        .create(true)
32        .write(true)
33        .open("./test.log").unwrap();
34    file.write("cccachjashdckjas".as_bytes());
35    print!("ccc => {}", v.get_workflow_cache_path())
36}