alfred_workflow_rust_project/
workflow_background.rs1use 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}